#include <../lib/igloo/igloo.h>
using namespace igloo;

#include <stdio.h>
#include <string>
using namespace std;

#include "../../Archivos/ArchivoDeEstructurasVariables.h"
#include "../../Entidades/Conteo.h"
using namespace Archivos;
using namespace Entidades;
Context(TestConteo)
{

	ArchivoDeEstructurasVariables* archivo;
	string path;

	void SetUp() {

		path = "TestConteo.bin";
		archivo = new ArchivoDeEstructurasVariables(path);

		Conteo* entidadInsertada = new Conteo();
		entidadInsertada->setDistrito("Floresta");
		entidadInsertada->setEleccion(20111001, "Jefe comunal");
		entidadInsertada->setLista("Lista FPV");
		entidadInsertada->setCantidadDeVotos(50000);
		archivo->insertar(entidadInsertada);
		delete entidadInsertada;
	}

	void TearDown() {

		remove(path.c_str());
		delete archivo;
	}

	Spec(TestLeer) {

		Conteo* entidadLeida = new Conteo();
		archivo->leer(entidadLeida, 0);

		Assert::That(entidadLeida->getDistrito()->getNombre(), Is().Containing("Floresta"));
		Assert::That(entidadLeida->getEleccion()->getFecha(), Is().EqualTo(20111001));
		Assert::That(entidadLeida->getEleccion()->getCargo()->getNombre(), Is().EqualTo("Jefe comunal"));
		Assert::That(entidadLeida->getLista()->getNombre(), Is().EqualTo("Lista FPV"));
		Assert::That(entidadLeida->getCantidadDeVotos(), Is().EqualTo((unsigned int)50000));

		delete entidadLeida;
	}

	Spec(TestBorrar) {

		Conteo* entidadBorrada = new Conteo();
		bool borradoExitoso = archivo->borrar(entidadBorrada, 0);
		delete entidadBorrada;

		Assert::That(borradoExitoso, Is().EqualTo(true));
	}

};

